#!/bin/bash

set -e

# 定义颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color


ROOT_DIR="/root/tools"
FISCO_BCOS_URL="https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v2.9.1/fisco-bcos.tar.gz"
GITEE_REPO="https://gitee.com/lin-zili/fisco-bcos-sample.git"

function check_command() {
    command -v $1 > /dev/null 2>&1 || {
        echo >&2 "$1 命令未被安装。正在自动安装..."
        apt-get update && apt-get install -y $1
    }
}

# 检查节点是否在运行，并停止它们
check_and_stop_nodes() {
    echo "正在检查和停止任何正在运行的节点..."
    for pid in $(ps aux | grep 'fisco-bcos' | grep -v grep | awk '{print $2}'); do
        kill -9 $pid
        echo "--> 已停止PID为 $pid 的运行节点"
    done
    echo "所有正在运行的节点都已停止."
}


function main() {
    echo -e "${GREEN}开始部署... =====${NC}"

    # 检查必要的命令
    check_command "git"
    check_command "curl"
    check_command "openssl"

    # 进入工作目录
    [ ! -d "$ROOT_DIR" ] && mkdir -p $ROOT_DIR
    cd $ROOT_DIR

    # 检查 nodes 是否存在
    if [ -d "nodes" ]; then
        echo "nodes 目录已存在。"
        echo "正在删除 nodes..."
        rm -rf nodes
    fi
    check_and_stop_nodes
    # 下载并解压 FISCO-BCOS
    echo "正在下载 FISCO-BCOS..."
    curl -#LO $FISCO_BCOS_URL
    tar zxvf fisco-bcos.tar.gz

    # 使用预编译方式部署
    echo "正在使用预编译方式部署..."
    bash build_chain.sh -l 127.0.0.1:4 -e "$ROOT_DIR"/fisco-bcos
    bash nodes/127.0.0.1/start_all.sh
    # 检查 webase-front 是否存在，存在则删除重新克隆
    if [ -d "webase-front" ]; then
        echo "webase-front 已存在，正在删除..."
        rm -rf webase-front
    fi
    # 检查 5002 端口是否被占用
    if lsof -i:5002 > /dev/null; then
        echo "5002 端口被占用，正在停止对应进程..."
        kill $(lsof -t -i:5002)
    fi
    echo "正在克隆 webase-front 项目..."
    git clone $GITEE_REPO
    mv fisco-bcos-sample webase-front


    # 启动项目
    cd webase-front
    bash start.sh

    # 获取服务器IP并打印URL
    SERVER_IP=$(hostname -I | awk '{print $1}')
    echo -e "${GREEN}部署完成! 请访问: http://${SERVER_IP}:5002/WeBASE-Front${NC}"
}

main